'use strict';
const WebSocket = require('ws');
/** pg数据库 */
module.exports.DB = require("./pgsql");
/** redis数据库 */
module.exports.RS = require("./redis");
/** 检查参数 */
module.exports.checkParam = function(pa, d){
    if(!d[2]){
        LOG.error("cp", d);
        return false;
    } 
    if(typeof(pa) == 'string'){
        if(!(pa in d[2])){
            LOG.error("cp2", d);
            return false;
        } 
    }else{
        for(let k in pa){
			if(!(pa[k] in d[2])){
				LOG.error('cp3', pa[k], d);
				return false;
			}
		}
    }
    return true;
}

/** 发送消息 */
exports.send = function send(s, d){
    if(typeof(d) != 'string'){
        if(d[1] < 80) d[1] += 100;
        d = JSON.stringify(d);
    } 
    LOG.info('S', s.U && s.U.uid || 0, d);
    if(s && s.readyState == WebSocket.OPEN) s.send(d);
    else LOG.error("ws error", (s && s.readyState) || "s null");
}

/** 发送错误 */
exports.sendE = function(s, d){
    d = '[0,88,'+d+']'
    LOG.info('S', s.U && s.U.uid || 0, d);
    s.send(d);
}

/** 发送到指定用户 */
exports.sendUser = function(uid, d){
    if(Array.isArray(uid)){
        for(let u of uid) USERMAP[u] && exports.send(USERMAP[u], d);
    }else if(uid == 0){ //给所有的用户发送
        for(let k in USERMAP) exports.send(USERMAP[k], d);
    }else{
        USERMAP[uid] && exports.send(USERMAP[uid], d);
    }
}

/** 计算md5 */
exports.MD5 = function MD5(str){
	const crypto = require('crypto');
	let md5 = crypto.createHash("md5");
	md5.update(str);
	return md5.digest('hex');
}